/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Daerah;

import Tools.Koneksi;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author gatz
 */
public class DaerahKontrol {

    private Connection conn;

    public DaerahKontrol(Connection koneksi) {
        this.conn = koneksi;
    }

    public static DaerahKontrol getKoneksiDaerah() throws SQLException {
        DaerahKontrol kon = new DaerahKontrol(Koneksi.bukaKoneksi());
        return kon;
    }

    public void tambahDaerah(Daerah daerah) throws SQLException {
        String id = daerah.getIdDaerah();
        String nama = daerah.getNamaDaerah();
        String sql = "insert into Daerah (IdDaerah, NamaDaerah)"
                + "values ('" + id + "','" + nama + "')";

        Statement stat = conn.createStatement();
        stat.executeUpdate(sql);
        conn.close();
    }

    public void updateDaerah(Daerah daerah) throws SQLException {
        PreparedStatement statement = null;
        try {
            conn.setAutoCommit(false);
            String sql = "update Daerah set NamaDaerah=? where IdDaerah=?";
            statement = conn.prepareStatement(sql);
            statement.setString(1, daerah.getNamaDaerah());
            statement.setString(2, daerah.getIdDaerah());
            statement.executeUpdate();
            conn.commit();
        } catch (SQLException exception) {
            conn.rollback();
            throw exception;
        }
    }

    public void deleteDaerah(Daerah daerah) throws SQLException {
        String id = daerah.getIdDaerah();
        String sql = "delete Daerah "
                + "where IdDaerah='" + id + "'";
        Statement stat = conn.createStatement();
        stat.executeUpdate(sql);
        conn.close();
    }

    public List<Daerah> lihatSeluruhDaerah() throws SQLException {
        PreparedStatement statement = null;
        ResultSet result = null;

        conn.setAutoCommit(false);
        statement = conn.prepareStatement("select IdDaerah, NamaDaerah from Daerah order by IdDaerah");
        result = statement.executeQuery();
        List<Daerah> daerah = new ArrayList<Daerah>();

        while (result.next()) {
            Daerah daerah2 = new Daerah();
            daerah2.setIdDaerah(result.getString("IdDaerah"));
            daerah2.setNamaDaerah(result.getString("NamaDaerah"));
            daerah.add(daerah2);
        }
        conn.commit();
        return daerah;
    }
    
//    public String cariIdDaerah() throws SQLException {
//        PreparedStatement statement = null;
//        ResultSet result = null;
//        long idDaerah = 0;
//        String a = "", fix = "";
//        try {
//            conn.setAutoCommit(false);
//            String sql = "select max(idDaerah) from Daerah ";
//            statement = conn.prepareStatement(sql);
//            result = statement.executeQuery();
//            while (result.next()) {
//                a = result.getString("max(idDaerah)");
//                if (a == null) {
//                    idDaerah = 0;
//                    break;
//                }
//                idDaerah = Long.parseLong(a);
//            }
//            conn.commit();
//        } catch (SQLException ex) {
//            Logger.getLogger(DaerahKontrol.class.getName()).log(Level.SEVERE, null, ex);
//        }
//        idDaerah = idDaerah + 1;
//        String tmbh1 = String.valueOf(idDaerah);
//        if (idDaerah < 10) {
//            String a1 = "00";
//            fix = a1 + tmbh1;
//        } else if (idDaerah < 100 && idDaerah > 9) {
//            String b = "0";
//            fix = b + tmbh1;
//        } else if (idDaerah > 99 && idDaerah < 1000) {
//            fix = String.valueOf(idDaerah);
//        }
//        return fix;
//    }

}
